home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
graphics
/
chs_ultd.lzh
/
CHS_ULTD.500
/
SOURCE
/
XCOMMON.H
< prev
Wrap
C/C++ Source or Header
|
1992-09-25
|
11KB
|
410 lines
#include <gem.h>
#include <stdio.h>
#ifdef COLOR
#define MAX_X 639
#define MAX_Y 199
#define LAST_COL 15
#else
#define MAX_X 639
#define MAX_Y 399
#define LAST_COL 4
#endif
#define UNPACKED 0
#define UNPACKABLE 1
#define PACKED 2
#define S_SMALL 0
#define S_MID 1
#define S_BIG 2
#define NO_SIZE 3
typedef struct {
unsigned compare : 2; /* 0 And 1 Or 2 Xor */
unsigned wait : 1; /* 1 warten auf taste 0 zeit */
unsigned richtung : 1; /* 0 vorwärts 1 vor und zurück */
unsigned repeat : 1; /* 0 einmal 1 wiederholt */
} AO_FLAGS;
typedef struct {
AO_FLAGS flags;
unsigned wait_pic;
unsigned wait_end;
} SHOW_OPTS;
typedef struct {
unsigned dummy : 1; /* war mal kompakt/stad */
unsigned pic_type : 2; /* 0 doodle 1 degas 2 stad 3 snapshot */
unsigned block : 1; /* 0 maus 0 fadenkreuz */
unsigned gong : 1; /* 0 aus 1 ein */
unsigned save : 1; /* 0 aus 1 ein */
unsigned save_war : 1; /* 0 aus 1 ein */
unsigned abbruch : 1; /* 0 aus 1 ein */
unsigned delete : 2; /* 0 nie 1 neu 2 mehrere 3 immer */
unsigned quit : 2; /* 0 nie 1 neu 3 immer */
unsigned hc_size : 2; /* 0 klein 1 groß 2 quer 3 doppel */
unsigned hc_leer : 1; /* 0 nicht drucken 1 drucken */
unsigned hc_text : 1; /* 0 nicht drucken 1 drucken */
unsigned hc_abst : 1; /* 0 aus 1 ein */
unsigned hc_ff : 8; /* bilder bis formfeed */
unsigned d_tos : 1; /* 0 eigene pr_out 1 tos pr_out */
unsigned pack : 1; /* 0 bilder nicht packen 1 bilder packen */
#ifndef COLOR
unsigned col_flag : 1; /* 0 normal 1 invers */
#endif
} FR_FLAGS;
#ifdef COLOR
typedef struct {
unsigned speed : 16;
unsigned first : 4;
unsigned last : 4;
unsigned dir : 1; /* 0 links 1 rechts */
} CYCLE_OPT;
#endif
typedef struct
{
FR_FLAGS flags;
char path[40];
char ext;
int dummy;
long mem_rest;
SHOW_OPTS show;
char d_code[8][10];
char d_rand[9];
#ifdef COLOR
int col_tab[16]; /* farbtabelle für desktop, mid_rez */
CYCLE_OPT cycle;
int col_tabs[12][16];
#endif
} CHS_SET;
typedef struct
{
long len;
long *mother;
char data[];
} PARAMETER;
typedef struct
{
long len;
long *mother;
long data[];
} PIC_DATA;
typedef struct
{
int nr; /* nummer */
int flag; /* 0 film 1 pic 2... fractale */
int objc_flag;
int objc_state;
int icon_type; /* flag + 256 für checked */
char name[10];
char path[40];
char ext[4];
char pic_packed; /* UNPACKED, UNPACKABLE, PACKED */
char size; /* 0 small 1 mid 2 big */
PIC_DATA *pic_data;
long pic_len;
PIC_DATA *x_data;
int lastline;
int xor_offset;
PARAMETER *par;
#ifndef COLOR
int color;
#else
int col_tab[16];
#endif
} FR_OBJC;
/* ------------------------------------------------------------- */
/* bei parametereingabe anzugebende parameter */
/* ------------------------------------------------------------- */
typedef struct
{
int anzahl;
int size;
#ifndef COLOR
int color;
#else
int col_tab[16];
#endif
int xor_offset;
char name[16];
char path[64];
} X_PARAM;
typedef struct /* für info anzeigen */
{
int anz;
double points;
double time;
double iter;
} PIC_INFO;
typedef struct
{
int size;
#ifndef COLOR
int color;
#else
int col_tab[16];
#endif
int xor_offset;
int lastline;
} L_PARAM; /* für load */
typedef struct
{
char id[8]; /* kennung der routine,
gedacht: 4 zeichen für autor
4 zeichen für routine */
char *menue; /* menüeintrag
max. 16 zeichen */
char *name; /* name des autors für programm-info anzeigen
max. 24 zeichen */
char *version; /* versionsnummer (und datum) der routine
max. 20 zeichen */
char *text; /* allg. beschreibung oder sonst. kommentar
max. 64 zeichen */
ICONBLK *icon; /* zeiger auf icon für nicht gespeicherte */
ICONBLK *xicon; /* und gespeicherte bilder */
long set_len; /* länge der voreinstellungen */
void *set; /* zeiger auf speicherbereich für für voreinstellungen,
muß routine bereitstellen! */
long par_len; /* länge der bild-parameter */
long make_len; /* länge der eingabeparameter für make bild(er) */
long neu_len; /* länge für parameter bei make_neu */
void *neu_par; /* zeiger auf make_neu-parameter,
von make_neu-routine zu setzen */
int neu_flag; /* flag für make neu:
0 not set, 1 neu ok, -1 nicht neu (abbruch in dialog) */
int last_flag; /* ==1 -> lastline (>0) entspricht ber. graph. zeilen
==0 -> immer ganzen screen speichern */
/* routinen */
int (*do_init)(int nr);
/*
initialisiere routinen (zB. resourcen laden etc.)
nr: nummer des fractal-types
returns 0 -> ok
1 -> fehler
*/
int (*get_param)(void *param,X_PARAM *x_param);
/* parameter für bild(er) eingeben
param: bildparameter
x_param: allg. parameter (größe, name...)
RETURNS: 0/1 für abbruch/ok
*/
void *(*get_picpar)(void *param_in,int nr,int anzahl);
/* aus bild(er)parameter bildparameter machen
param_in: bildparameter (wie in get_param)
nr: nummer des akt. bildes
anzahl: anzahl der bilder insg.
RETURNS: zeiger auf einzelbildparam.
*/
void (*set_param)(void);
/* OPT */
/* parameter voreinstellen
(aufruf von menü mit shift)
*/
void (*extended)(void);
/* OPT */
/* aufruf vom menü aus mit control
*/
int (*get_neu_param)(void *param);
/* OPT */
/* parameter für 'neu berechnen' eingeben
param: zeiger auf speicher für parameter
routine muß neu_par und neu_flag setzen
*/
void *(*make_neu_param)(FR_OBJC *objc,void *param,X_PARAM *x_par,int *change,int *redraw,int *size);
/* OPT */
/*
aus parametern für 'neu berechnen' und
bildparameter neue bildparameter erzeugen
und zurückgeben
change,size und return
*/
void (*make_vier)(FR_OBJC *in,void *out,int nr);
/* OPT */
/* erzeuge aus bildparametern parameter für vier bilder
in: zeiger auf input-object
out: zeiger auf parameter des outputs
nr: nummer des neuen bildes (0-3)
*/
int (*do_draw)(FR_OBJC *object,void *param,void *puffer);
/* bild berechnen
object: zielobject
param: parameter
puffer: freier puffer (32k)
RETURNS: abbruchzustand
*/
void (*dont_draw)(FR_OBJC *object,void *param);
int (*show_par)(FR_OBJC *object,long *buf);
/* OPT */
/* zeige parameter an
return: 0 nichts geändert, 1 param. mögl. geändert */
void (*show_info)(FR_OBJC *object,long *buf);
/* OPT */
/* zeige bildinfo an
*/
void (*get_info)(FR_OBJC *object,PIC_INFO *info);
/* OPT */
/* gebe bildinformationen zurück
*/
void (*get_objcblk)(FR_OBJC *object,double *x_min,double *x_max,double *y_min,double *y_max);
/* OPT */
/* koordinaten des bildrechteckes zurückgeben
existenz der routine bedeutet auch, daß bild koordinatenstruktur hat
object object
x_min,x_max,y_min,y_max
*/
void (*get_xobjcblk)(FR_OBJC *object,double *x_min,double *x_max,double *y_min,double *y_max);
/* OPT */
/* koordinaten des bildrechteckes zurückgeben
object object
x_min,x_max,y_min,y_max
*/
void (*get_pkt)(FR_OBJC *object,double *x,double *y);
/* OPT */
/* gebe konstante zurück,
nur sinnvoll wenn auch get_objcblk */
void (*show_pktinfo)(FR_OBJC *object,int x,int y,long *scr,long *buf);
/* OPT */
/* zeige punktinfo für (raster)koordinaten x,y */
/* scr: aktueller bildschirm */
/* buf: 32k puffer zum sichern des bildschirms */
void (*dr_param)(FR_OBJC *objc);
/* OPT */
/* drucke parameter eines bildes unter hardcopy */
int (*cnv_load)(int frac_typ,L_PARAM *par,PIC_DATA *xparam,PIC_DATA *param,PIC_DATA **x_par);
/* OPT */
/* konvertiere parameter!, anpassen: offset, farben,
parameter von xparam nach param kopieren (und anpassen)
x_par